package GameBoard;

import java.awt.Point;

import GameElements.Tile;
import GameElements.TileFactory;

import junit.framework.TestCase;

public class BasicGameBoardTest extends TestCase {
	public void testCanAddTileIntInt() {
		GameBoard g=GameBoardFactory.getInstance().createGameBoard("Jeu de base");
		Tile t = TileFactory.getInstance().createTile("img/tiles/", "11.png", 1).get(0);
		Tile tN = TileFactory.getInstance().createTile("img/tiles/", "12.png", 1).get(0);
		Tile tE = TileFactory.getInstance().createTile("img/tiles/", "13.png", 1).get(0);
		Tile tW = TileFactory.getInstance().createTile("img/tiles/", "14.png", 1).get(0);
		Tile tS = TileFactory.getInstance().createTile("img/tiles/", "15.png", 1).get(0);
		g.add(tN, 5, 4);
		g.add(tE, 6, 5);
		g.add(tW,4, 5);
		g.add(tS, 5, 6);
		assertNotNull("La tuile tN ne devrait pas être null", tN);
		assertNotNull("La tuile tS ne devrait pas être null", tS);
		assertNotNull("La tuile tE ne devrait pas être null", tE);
		assertNotNull("La tuile tW ne devrait pas être null", tW);
		
		
	}

	public void testCanAddPawnIntIntInt() {
		
	}

	public void testAlgo1() {
		
	}

	public void testAlgo2() {
		
	}

	public void testGetIJTilesVoisinesLinked() {
		
	}

	public void testGetIJTileVoisine() {
		GameBoard g=GameBoardFactory.getInstance().createGameBoard("Jeu de base");
		Tile t1 = TileFactory.getInstance().createTile("img/tiles/", "11.png", 1).get(0);
		Tile t2 = TileFactory.getInstance().createTile("img/tiles/", "12.png", 1).get(0);
		Tile t3 = TileFactory.getInstance().createTile("img/tiles/", "13.png", 1).get(0);
		Tile t4 = TileFactory.getInstance().createTile("img/tiles/", "14.png", 1).get(0);
		Tile t5 = TileFactory.getInstance().createTile("img/tiles/", "15.png", 1).get(0);
		g.add(t1, 5, 5);
		g.add(t2, 5, 6);
		g.add(t3, 6, 5);
		g.add(t4, 5, 4);
		g.add(t5, 4, 5);
		Point p1 = g.getIJTileVoisine(5, 5, Tile.s0);
		assertEquals("renvoie le i et j du sud", p1.x, 5);
		assertEquals("renvoie le i et j du sud", p1.y, 6);
		Point p2 = g.getIJTileVoisine(5, 5, Tile.s1);
		assertEquals("renvoie le i et j du sud", p2.x, 5);
		assertEquals("renvoie le i et j du sud", p2.y, 6);
		Point p3 = g.getIJTileVoisine(5, 5, Tile.s2);
		assertEquals("renvoie le i et j du sud", p3.x, 5);
		assertEquals("renvoie le i et j du sud", p3.y, 6);
		Point p4 = g.getIJTileVoisine(5, 5, Tile.e0);
		assertEquals("renvoie le i et j du est", p4.x, 6);
		assertEquals("renvoie le i et j du est", p4.y, 5);
		Point p5 = g.getIJTileVoisine(5, 5, Tile.e1);
		assertEquals("renvoie le i et j du est", p5.x, 6);
		assertEquals("renvoie le i et j du est", p5.y, 5);
		Point p6 = g.getIJTileVoisine(5, 5, Tile.e2);
		assertEquals("renvoie le i et j du est", p6.x, 6);
		assertEquals("renvoie le i et j du est", p6.y, 5);
		Point p7 = g.getIJTileVoisine(5, 5, Tile.n0);
		assertEquals("renvoie le i et j du nord", p7.x, 5);
		assertEquals("renvoie le i et j du nord", p7.y, 4);
		Point p8 = g.getIJTileVoisine(5, 5, Tile.n1);
		assertEquals("renvoie le i et j du nord", p8.x, 5);
		assertEquals("renvoie le i et j du nord", p8.y, 4);
		Point p9 = g.getIJTileVoisine(5, 5, Tile.n2);
		assertEquals("renvoie le i et j du nord", p9.x, 5);
		assertEquals("renvoie le i et j du nord", p9.y, 4);
		Point p10 = g.getIJTileVoisine(5, 5, Tile.w0);
		assertEquals("renvoie le i et j du ouest", p10.x, 4);
		assertEquals("renvoie le i et j du ouest", p10.y, 5);
		Point p11 = g.getIJTileVoisine(5, 5, Tile.w1);
		assertEquals("renvoie le i et j du ouest", p11.x, 4);
		assertEquals("renvoie le i et j du ouest", p11.y, 5);
		Point p12 = g.getIJTileVoisine(5, 5, Tile.w2);
		assertEquals("renvoie le i et j du ouest", p12.x, 4);
		assertEquals("renvoie le i et j du ouest", p12.y, 5);
		
		
		
		
	}
}
